const utils = require('./utils');
// 定义文件存储路径
let htmPath = getApp().fileBasePath;

/**
 * 文件下载
 * 校验所要存储目录是否存在,不存在则先创建目录
 * 设置filePath,将文件下载到指定目录
 * @param { String } url 文件线上地址
 * @param { String } fileName 定义文件名称
 * @param { String } path 文件路径（默认存储htm-weixin,可通过传递此项,在htm-weixin下新增子目录存放文件）
 */
export function downloadFile({ url, name, path }) {
	return new Promise(resolve => {
		// TODO 需要对传值path处理，若没/要加上
		let filePath = path ? htmPath + path : htmPath
		// 对文件名进行处理
		let fileName = '';
		if (!name) {
			fileName = utils.getFileName(url).fileName;
		} else {
			fileName = `${name}.${utils.getFileName(url).fileType}`
		}
		// 校验所存储目录是否存在
		wx.getFileSystemManager().access({
			path: filePath,
			fail(err) {
				console.log('该目录不存在,正在创建目录');
				wx.getFileSystemManager().mkdir({
					dirPath: filePath,
					recursive: true
				})
			}
		});
		// 实现下载
		const downloadTask = wx.downloadFile({
			url: url,
			filePath: filePath + `/${fileName}`, // 配置文件存储路径以及名称
			success(res) {
				if (res.statusCode !== 200) {
					wx.showToast({
						title: '下载失败,请检查下载地址',
						icon: 'none'
					})
					console.error(`错误代码：${res.statusCode}`, res);
					resolve({
						errno: 10000,
						errMsg: res
					})
				}
			},
			fail(error) {
				console.log(error);
				resolve({
					errno: 10000,
					errMsg: error.errMsg
				})
			}
		})
		// 监听下载进度
		downloadTask.onProgressUpdate((res) => {
			if (res.progress == 100) {
				wx.hideLoading();
				resolve({
					success: '下载完成'
				})
			}
			wx.showLoading({
				title: `下载进度：${res.progress}`,
			})
			// wx.showModal({
			// 	title: '提示',
			// 	content: `下载进度：${res.progress}`,
			// 	// content: `下载进度：${res.progress}`,
			// 	confirmText: '取消下载',
			// 	showCancel: false,
			// 	success (res) {
			// 		if (res.confirm) {
			// 			console.log('用户点击确定')
			// 			downloadTask.abort();
			// 			wx.hideLoading();
			// 		}
			// 	}
			// })
		})
	})
}
